↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
LOG2_IN(X, Y) → U11(X, Y, log2_in(X, 0, s(0), Y))
LOG2_IN(X, Y) → LOG2_IN(X, 0, s(0), Y)
LOG2_IN(X, Half, Y, Y) → U51(X, Half, Y, small_in(X))
LOG2_IN(X, Half, Y, Y) → SMALL_IN(X)
U51(X, Half, Y, small_out(X)) → U61(X, Half, Y, small_in(Half))
U51(X, Half, Y, small_out(X)) → SMALL_IN(Half)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(X, s(s(Half)), Acc, Y) → SMALL_IN(X)
U31(X, Half, Acc, Y, small_out(X)) → U41(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(s(s(X)), Half, Acc, Y) → U21(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
LOG2_IN(X, Y) → U11(X, Y, log2_in(X, 0, s(0), Y))
LOG2_IN(X, Y) → LOG2_IN(X, 0, s(0), Y)
LOG2_IN(X, Half, Y, Y) → U51(X, Half, Y, small_in(X))
LOG2_IN(X, Half, Y, Y) → SMALL_IN(X)
U51(X, Half, Y, small_out(X)) → U61(X, Half, Y, small_in(Half))
U51(X, Half, Y, small_out(X)) → SMALL_IN(Half)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(X, s(s(Half)), Acc, Y) → SMALL_IN(X)
U31(X, Half, Acc, Y, small_out(X)) → U41(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(s(s(X)), Half, Acc, Y) → U21(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
LOG2_IN(s(s(Half)), Acc, Y) → U31(Acc, Y, small_in)
U31(Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
small_in → small_out(s(0))
small_in → small_out(0)
small_in
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
U31(Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
small_in → small_out(s(0))
small_in → small_out(0)
small_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PrologToPiTRSProof
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
U31(Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
small_in
small_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
U31(Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(z0), z1, z2) → LOG2_IN(s(s(z0)), z1, z2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
LOG2_IN(s(z0), z1, z2) → LOG2_IN(s(s(z0)), z1, z2)
U31(Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
U31(z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
U31(z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
U31(z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
U31(z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(z0), z1, z2) → LOG2_IN(s(s(z0)), z1, z2)
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
U31(z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(s(0)))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
U31(z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(s(0)))
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
U31(z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(s(0)))
LOG2_IN(s(s(y0)), y1, y2) → U31(y1, y2, small_out(0))
U31(z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(0))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
U31(z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(0))
U31(z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
U31(z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z0), z1) → LOG2_IN(s(s(0)), s(z0), z1)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(z1, z2, small_out(0))
U31(z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(z0), z1, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(s(z0), z1, small_out(s(0)))
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
LOG2_IN(X, Y) → U11(X, Y, log2_in(X, 0, s(0), Y))
LOG2_IN(X, Y) → LOG2_IN(X, 0, s(0), Y)
LOG2_IN(X, Half, Y, Y) → U51(X, Half, Y, small_in(X))
LOG2_IN(X, Half, Y, Y) → SMALL_IN(X)
U51(X, Half, Y, small_out(X)) → U61(X, Half, Y, small_in(Half))
U51(X, Half, Y, small_out(X)) → SMALL_IN(Half)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(X, s(s(Half)), Acc, Y) → SMALL_IN(X)
U31(X, Half, Acc, Y, small_out(X)) → U41(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(s(s(X)), Half, Acc, Y) → U21(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
LOG2_IN(X, Y) → U11(X, Y, log2_in(X, 0, s(0), Y))
LOG2_IN(X, Y) → LOG2_IN(X, 0, s(0), Y)
LOG2_IN(X, Half, Y, Y) → U51(X, Half, Y, small_in(X))
LOG2_IN(X, Half, Y, Y) → SMALL_IN(X)
U51(X, Half, Y, small_out(X)) → U61(X, Half, Y, small_in(Half))
U51(X, Half, Y, small_out(X)) → SMALL_IN(Half)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(X, s(s(Half)), Acc, Y) → SMALL_IN(X)
U31(X, Half, Acc, Y, small_out(X)) → U41(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(s(s(X)), Half, Acc, Y) → U21(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
log2_in(X, Y) → U1(X, Y, log2_in(X, 0, s(0), Y))
log2_in(X, Half, Y, Y) → U5(X, Half, Y, small_in(X))
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
U5(X, Half, Y, small_out(X)) → U6(X, Half, Y, small_in(Half))
U6(X, Half, Y, small_out(Half)) → log2_out(X, Half, Y, Y)
log2_in(X, s(s(Half)), Acc, Y) → U3(X, Half, Acc, Y, small_in(X))
U3(X, Half, Acc, Y, small_out(X)) → U4(X, Half, Acc, Y, log2_in(Half, s(0), s(Acc), Y))
log2_in(s(s(X)), Half, Acc, Y) → U2(X, Half, Acc, Y, log2_in(X, s(Half), Acc, Y))
U2(X, Half, Acc, Y, log2_out(X, s(Half), Acc, Y)) → log2_out(s(s(X)), Half, Acc, Y)
U4(X, Half, Acc, Y, log2_out(Half, s(0), s(Acc), Y)) → log2_out(X, s(s(Half)), Acc, Y)
U1(X, Y, log2_out(X, 0, s(0), Y)) → log2_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U31(X, Half, Acc, Y, small_out(X)) → LOG2_IN(Half, s(0), s(Acc), Y)
LOG2_IN(X, s(s(Half)), Acc, Y) → U31(X, Half, Acc, Y, small_in(X))
LOG2_IN(s(s(X)), Half, Acc, Y) → LOG2_IN(X, s(Half), Acc, Y)
small_in(s(0)) → small_out(s(0))
small_in(0) → small_out(0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
LOG2_IN(s(s(Half)), Acc, Y) → U31(Half, Acc, Y, small_in)
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
U31(Half, Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
small_in → small_out(s(0))
small_in → small_out(0)
small_in
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
U31(Half, Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
small_in → small_out(s(0))
small_in → small_out(0)
small_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
U31(Half, Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
small_in
small_in
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
U31(Half, Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
LOG2_IN(Half, Acc, Y) → LOG2_IN(s(Half), Acc, Y)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
LOG2_IN(s(z0), z1, z2) → LOG2_IN(s(s(z0)), z1, z2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
U31(Half, Acc, Y, small_out(X)) → LOG2_IN(s(0), s(Acc), Y)
LOG2_IN(s(z0), z1, z2) → LOG2_IN(s(s(z0)), z1, z2)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
U31(z0, z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
U31(z0, z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
U31(z0, z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
U31(z0, z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
LOG2_IN(s(z0), z1, z2) → LOG2_IN(s(s(z0)), z1, z2)
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(0))
U31(z0, z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
U31(z0, z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(0))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
U31(z0, z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
U31(z0, z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(0))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(0))
LOG2_IN(s(s(y0)), y1, y2) → U31(y0, y1, y2, small_out(s(0)))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(s(0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
U31(z0, z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
U31(z0, z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(0))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(0))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(s(0)))
U31(s(0), s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(0, s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(s(z0), z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(0))
U31(s(0), s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(0, s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(s(z0), z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
U31(z0, z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(0))
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(s(0)))
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(s(0)))
U31(s(0), s(z0), z1, small_out(s(0))) → LOG2_IN(s(0), s(s(z0)), z1)
U31(s(z0), z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
U31(0, s(z0), z1, small_out(s(0))) → LOG2_IN(s(0), s(s(z0)), z1)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ NonTerminationProof
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(0))
U31(s(0), s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(0, s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(s(z0), z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(s(0)))
U31(s(0), s(z0), z1, small_out(s(0))) → LOG2_IN(s(0), s(s(z0)), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(0))
U31(s(z0), z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(s(0)))
U31(0, s(z0), z1, small_out(s(0))) → LOG2_IN(s(0), s(s(z0)), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(s(0)))
LOG2_IN(s(s(z0)), z1, z2) → LOG2_IN(s(s(s(z0))), z1, z2)
LOG2_IN(s(s(0)), s(z0), z1) → LOG2_IN(s(s(s(0))), s(z0), z1)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(0))
U31(s(0), s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(0, s(z0), z1, small_out(0)) → LOG2_IN(s(0), s(s(z0)), z1)
U31(s(z0), z1, z2, small_out(0)) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(0), s(z1), z2) → LOG2_IN(s(s(0)), s(z1), z2)
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(s(0)))
U31(s(0), s(z0), z1, small_out(s(0))) → LOG2_IN(s(0), s(s(z0)), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(0))
LOG2_IN(s(s(0)), s(z0), z1) → U31(0, s(z0), z1, small_out(0))
U31(s(z0), z1, z2, small_out(s(0))) → LOG2_IN(s(0), s(z1), z2)
LOG2_IN(s(s(s(0))), s(z0), z1) → U31(s(0), s(z0), z1, small_out(s(0)))
U31(0, s(z0), z1, small_out(s(0))) → LOG2_IN(s(0), s(s(z0)), z1)
LOG2_IN(s(s(s(z0))), z1, z2) → U31(s(z0), z1, z2, small_out(s(0)))